# 1.文本进度条
import time
import sys


def progressLength(total_length):
    # 定义进度条总长度
    # total_length = 50
    # 模拟持续的进度
    start = time.perf_counter()  # 程序开始时间记录
    for i in range(101):
        # 计算等号和空格的数量
        equals = int(i * total_length / 100)
        spaces = total_length - equals
        dur = time.perf_counter() - start  # 记录每次文本打印的时间
        # 输出进度条
        progress = str(i) + '%' + '[' + '=' * equals + ' ' * spaces + '] ' + "{:.2f}".format(dur) + "s"
        # 动态刷新输出
        sys.stdout.write('\r' + progress)

        sys.stdout.flush()
        # 模拟持续的进度，这里使用 time.sleep 模拟持续的进度
        time.sleep(0.1)


def stdout(end_text, separator, total_length):
    # 输出结束信息
    # 定义分隔符和总长度
    # separator = '-'
    # total_length = 25
    # end_text = "程序结束"
    # 输出分隔符
    sys.stdout.write('\n' + separator * total_length)

    # 居中显示程序结束

    padding = (total_length - len(end_text)) // 2
    sys.stdout.write(end_text)

    # 输出分隔符
    sys.stdout.write(separator * total_length)


stdout("程序306开始", "-", 23)
print("")  # 换行
progressLength(50)
stdout("程序结束", "-", 25)
